package com.bean;

import com.tools.WXDatahubConfig;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;
import java.util.Random;

@Builder
@Getter
@Setter
@ToString
public class SignsDataBO {
    /**
     * 体征指标数据格式版本, 当前固定值为1.0，便于以后格式调整升级
     */
    private String version;

    /**
     * 在IRS应用编目后的应用编码
     */
    private String appCode;
    /**
     * 指标编码，由数据归集对接人员在指标组件申领编码
     */
    private String idxCode;
    /**
     * 指标名称
     */
    private String idxName;
    /**
     * 指标数据id：指标编码_业务系统内部数据id（确保全局唯一）
     */
    private String idxDataId;
    /**
     * 父级区划编码
     */
    private String parentZoningCode;
    /**
     * 区划编码
     */
    private String zoningCode;
    /**
     * 区划名称
     */
    private String zoningName;
    /**
     * 指标值
     */
    private String idxValue;
    /**
     * 指标预警阈值（可选）
     */
    private String thresholdStr;
    /**
     * 指标预警结果
     */
    private String valueResult;
    /**
     * 环比值（可选）
     */
    private String circleCompare;
    /**
     * 环比值正向标识，取值：+（环比值为正数为利好的发展）、-（环比值为负数为不好的发展）
     */
    private String circleComparePositive;
    /**
     * 同比值（可选）
     */
    private String sameCompare;
    /**
     * 同比值正向标识，取值：+（同比值为正数为利好的发展）、-（同比值为负数为不好的发展）
     */
    private String sameComparePositive;
    /**
     * 指标加工时间
     */
    private String idxTime;

    /**
     * 指标时间维度
     */
    private List<TimeDimensionData> idxTimeDimensionData;


    public static SignsDataBOBuilder createLfjtTO(String idxValue,String idxName){
        Random r = new Random();
        int num1 = r.nextInt(999);
        int num2 = r.nextInt(999);
        int num3 = r.nextInt(4);
        int num4 = 0;
        if(num3 < 2){
            num4 = num1*num2;
        }else {
            num4 = num1+num2;
        }
        String idxDataId = WXDatahubConfig.lfjt_idxCode+"_"+num4;
        SignsDataBOBuilder builder = getCommonTO();
        builder.version(WXDatahubConfig.version)
                .appCode(WXDatahubConfig.appCode)
                .idxCode(WXDatahubConfig.lfjt_idxCode)
                .idxDataId(idxDataId)
                .idxValue(idxValue)
                .idxName(idxName);
        return builder;
    }


    public static SignsDataBOBuilder createTO(String idxCode,String idxValue,String idxName){
        Random r = new Random();
        int num1 = r.nextInt(999);
        int num2 = r.nextInt(999);
        int num3 = r.nextInt(4);
        int num4 = 0;
        if(num3 < 2){
            num4 = num1*num2;
        }else {
            num4 = num1+num2;
        }
        String idxDataId = idxCode+"_"+num4;
        SignsDataBOBuilder builder = getCommonTO();
        builder.version(WXDatahubConfig.version)
                .appCode(WXDatahubConfig.appCode)
                .idxCode(idxCode)
                .idxDataId(idxDataId)
                .idxValue(idxValue)
                .idxName(idxName);
        return builder;
    }


    public static SignsDataBOBuilder createSlTO(String idxValue,String idxName,String time){
        Random r = new Random();
        int num1 = r.nextInt(999);
        int num2 = r.nextInt(999);
        int num3 = r.nextInt(4);
        int num4 = 0;
        if(num3 < 2){
            num4 = num1*num2;
        }else {
            num4 = num1+num2;
        }
        String valueRes = "1";
        if(Double.valueOf(idxValue) <= 1730){
            valueRes = "1";
        }else {
            valueRes = "2";
        }

        String idxDataId = WXDatahubConfig.sl_idxCode+"_"+num4;
        SignsDataBOBuilder builder = getCommonTO();
        builder.version(WXDatahubConfig.version)
                .appCode(WXDatahubConfig.appCode)
                .idxCode(WXDatahubConfig.sl_idxCode)
                .idxDataId(idxDataId)
                .idxValue(idxValue)
                .thresholdStr(">1730")
                .valueResult(valueRes)
                .idxTime(time)
                .idxName(idxName);
        return builder;
    }


    public static SignsDataBOBuilder getCommonTO(){
        SignsDataBOBuilder builder = SignsDataBO.builder();
        builder.parentZoningCode(WXDatahubConfig.pareZoningCode)
                .zoningCode(WXDatahubConfig.zoningCode)
                .zoningName(WXDatahubConfig.zoningName)
                .circleComparePositive(WXDatahubConfig.circleComparePostive)
                .sameComparePositive(WXDatahubConfig.sameComparePositive);
        return builder;


    }
}
